
package com.crowdfunding.circle.common.tags;

import java.util.List;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.lang3.StringUtils;

import com.crowdfunding.circle.common.param.SessionUserInfo;

/**
 * 如果用户拥有该角色即显示标签内部jsp内容
 *
 * @author 朱国军
 * @since 1.0
 * @version 2016年3月13日 朱国军
 */
public class HasRoleTag extends TagSupport {
    
    /** 版本号 */
    private static final long serialVersionUID = 6035062637061639138L;
    
    /** 角色名称 */
    private String name = null;
    
    /**
     * 构造函数
     */
    public HasRoleTag() {
    }
    
    /**
     * 获取角色名称
     *
     * @return 角色名称
     */
    public String getName() {
        return name;
    }
    
    /**
     * 设置角色名称
     *
     * @param name 角色名称
     */
    public void setName(String name) {
        this.name = name;
    }
    
    @Override
    public int doStartTag() throws JspException {
        HttpSession session = pageContext.getSession();
        
        if (session.getAttribute("sessionUserInfo") != null) {
            
            SessionUserInfo userInfo = (SessionUserInfo) session.getAttribute("sessionUserInfo");
            if (StringUtils.isNotBlank(name)) {
                List<String> roleList = userInfo.getRoleList();
                if (roleList != null && roleList.size() > 0) {
                    for (String hasRole : roleList) {
                        if (StringUtils.equals(name, hasRole)) {
                            return TagSupport.EVAL_BODY_INCLUDE;
                        }
                    }
                }
            }
        }
        return TagSupport.SKIP_BODY;
    }
    
}
